import axios, { isAxiosError } from 'axios';
import { UserData, AccountData } from '../types';

// 创建一个 Axios 实例
export const api = axios.create({
  baseURL: '/api', // 设置基础 URL
  timeout: 10000,  // 请求超时设置
});

// 请求拦截器
api.interceptors.request.use(
  (config) => {
    // 可以在这里添加请求头，例如认证信息
    return config;
  },
  (error) => Promise.reject(error)
);

// 响应拦截器
api.interceptors.response.use(
  (response) => response.data, // 直接返回数据部分
  (error) => Promise.reject(error)
);

// 定义 API 函数
export const fetchAccounts = async () => {
  return api.get('/accounts'); // 返回获取的账户数据
};

export const createAccount = async (accountData: AccountData) => {
  return api.post('/accounts', accountData); // 返回创建的账户数据
};

export const registerUser = async (userData: UserData) => {
  return api.post('/users/register', userData); // 返回注册结果
};

export const loginUser = async (userData: UserData) => {
  return api.post('/users/login', userData); // 返回登录结果
};

export default {
  fetchAccounts,
  createAccount,
  registerUser,
  loginUser,
  isAxiosError,
};
